package com.game.football;

import java.awt.*;

/**
 * 代表足球的类。
 */
public class Ball {
    private int x, y;
    private int dx, dy;
    private final int size;

    /**
     * 构造一个新的足球对象。
     *
     * @param x      足球的初始 X 坐标
     * @param y      足球的初始 Y 坐标
     * @param size   足球的大小
     */
    public Ball(int x, int y, int size) {
        this.x = x;
        this.y = y;
        this.size = size;
        this.dx = 0;
        this.dy = 0;
    }

    /**
     * 移动足球。
     */
    public void move() {
        x += dx;
        y += dy;

        // 碰撞检测
        if (x < 0 || x + size > Constants.WIDTH) {
            dx = -dx;
        }
        if (y < 0 || y + size > Constants.HEIGHT) {
            dy = -dy;
        }
    }

    /**
     * 设置足球的速度。
     *
     * @param dx X 方向的速度
     * @param dy Y 方向的速度
     */
    public void setSpeed(int dx, int dy) {
        this.dx = dx;
        this.dy = dy;
    }

    /**
     * 绘制足球。
     *
     * @param g 用于绘制的 Graphics 对象
     */
    public void draw(Graphics g) {
        g.setColor(Color.WHITE);
        g.fillOval(x, y, size, size);
    }

    /**
     * 获取足球的边界矩形。
     *
     * @return 足球的边界矩形
     */
    public Rectangle getBounds() {
        return new Rectangle(x, y, size, size);
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }

    public int getDx() {
        return dx;
    }

    public void setDx(int dx) {
        this.dx = dx;
    }

    public int getDy() {
        return dy;
    }

    public void setDy(int dy) {
        this.dy = dy;
    }

    public int getSize() {
        return size;
    }
}